package com.aigou.admin.aigouspringboot.service.impl;

import com.aigou.admin.aigouspringboot.common.Constants;
import com.aigou.admin.aigouspringboot.entity.Brand;
import com.aigou.admin.aigouspringboot.mapper.BrandMapper;
import com.aigou.admin.aigouspringboot.service.BrandService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * @Author Mr.LiFuXing
 * @Date 2024/12/10 20:21
 * @Title BrandServiceImpl
 * @Package com.aigou.admin.aigouspringboot.service.impl
 */
@Service
public class BrandServiceImpl implements BrandService {

    @Resource
    private BrandMapper brandMapper;

    @Override
    public List<Brand> selectAll() {
        return brandMapper.selectAll();
    }

    /**
     * 分页查询品牌列表
     * @param current 当前页
     * @return info 包含品牌列表信息的分页对象
     */
    @Override
    public PageInfo<Brand> selectBrandListByPage(Integer current) {
        // 分页插件，开启分页
        PageHelper.startPage(current, Constants.PAGE_SIZE);
        // 查询所有品牌信息，此处原代码查询的是User类型列表，修改为查询Brand类型列表，保持逻辑一致
        List<Brand> brandList = brandMapper.selectAll();
        // 把brandList放入返回分页信息
        return new PageInfo<>(brandList);
    }

    /**
     * 根据id删除品牌
     * @param id 品牌的id
     * @return 受影响的行数，正常删除返回1
     */
    @Override
    public int deleteById(String id) {
        return brandMapper.deleteByPrimaryKey(id);
    }

    /**
     * 根据id查询品牌信息
     * @param id 品牌的id
     * @return 对应的品牌对象
     */
    @Override
    public Brand selectById(String id) {

        return brandMapper.selectByPrimaryKey(id);
    }

    /**
     * 编辑品牌信息
     * @param brand 要编辑的品牌对象，包含修改后的数据
     * @return 受影响的行数，正常更新返回1
     */
    @Override
    public int edit(Brand brand) {

        return brandMapper.updateByPrimaryKeySelective(brand);
    }

    /**
     * 添加品牌信息
     * @param brand 要添加的品牌对象
     * @return 受影响的行数，正常插入返回1
     */
    @Override
    public int save(Brand brand) {

        return brandMapper.insertSelective(brand);
    }
}